/**
 * 登录请求
 */
export interface LoginData {
  phoneNumber: string;
  username?: string;
  password: string;
  rememberMe?: boolean;
  code?: string;
  uuid?: string;
}

export interface SmsLoginData {
  phoneNumber: string;
  smsCode: string;
}

/**
 * 登录响应
 */
export interface LoginResult {
  token: string;
}

/**
 * 验证码返回
 */
export interface VerifyCodeResult {
  captchaEnabled: boolean;
  uuid?: string;
  img?: string;
}


export interface UserInfoVo {
  /**
   * 权限码
   */
  permissionCodes?: string[];
  /**
   * 角色码
   */
  roleKeys?: string[];
  user?: SysUserVo;
}

/**
 * 用户信息视图对象
 */
export interface SysUserVo {
  /**
   * 用户头像
   */
  avatar?: string;
  /**
   * 是否属于该角色
   */
  belong?: boolean;
  /**
   * 数据创建者
   */
  createBy?: string;
  /**
   * 数据创建时间
   */
  createTime?: Date;
  /**
   * 删除标志，（0代表存在 2代表删除）
   */
  delFlag?: string;
  /**
   * 用户邮箱
   */
  email?: string;
  /**
   * 是否参与审批
   */
  examine?: boolean;
  /**
   * 用户ID
   */
  id?: string;
  /**
   * 所属身份
   */
  identityList?: SysIdentityVo[];
  /**
   * 岗位
   */
  job?: string;
  /**
   * 最后登录时间
   */
  loginDate?: Date;
  /**
   * 最后登录IP
   */
  loginIp?: string;
  /**
   * 用户昵称
   */
  nickName: string;
  organizationDataScope?: BaseDataScope;
  /**
   * 所属机构id
   */
  organizationId: number;
  /**
   * 所属组织名称
   */
  organizationName?: string;
  /**
   * 密码
   */
  password?: string;
  /**
   * 手机号
   */
  phoneNumber?: string;
  regionDataScope?: BaseDataScope;
  /**
   * 所属区域
   */
  regionId?: number;
  /**
   * 所属地区
   */
  regionName?: string;
  /**
   * 备注
   */
  remark?: string;
  /**
   * 角色对象
   */
  roles?: SysRoleVo[];
  /**
   * 用户性别
   */
  sex?: string;
  /**
   * 帐号状态，（0正常 1停用 2禁言 3未确定）
   */
  status?: string;
  /**
   * 是否超级管理员
   */
  superAdmin?: boolean;
  /**
   * 数据更新者
   */
  updateBy?: string;
  /**
   * 数据更新时间
   */
  updateTime?: Date;
  /**
   * 用户名
   */
  userName: string;
  /**
   * 用户类型，sys_user系统用户
   */
  userType?: string;
}

/**
 * 用户身份对象bo，用户身份
 */
export interface SysIdentityVo {
  /**
   * 数据创建者
   */
  createBy?: string;
  /**
   * 数据创建时间
   */
  createTime?: Date;
  /**
   * 删除标志，（0代表存在 2代表删除）
   */
  delFlag?: string;
  /**
   * 身分主键
   */
  id?: number;
  /**
   * 身份key
   */
  key: string;
  /**
   * 身份名称，（运营 ,校长, 专家 ,课程发布人员）
   */
  name: string;
  /**
   * 备注
   */
  remark?: string;
  /**
   * 是否固化，固化是禁止修改删除的
   */
  solid?: boolean;
  /**
   * 帐号状态（0正常 1停用）
   */
  status?: string;
  /**
   * 数据更新者
   */
  updateBy?: string;
  /**
   * 数据更新时间
   */
  updateTime?: Date;
}

/**
 * 机构数据范围
 */
export interface BaseDataScope {
  allow?: number[];
  deny?: number[];
}

/**
 * 角色信息视图对象
 */
export interface SysRoleVo {
  /**
   * 数据创建者
   */
  createBy?: string;
  /**
   * 数据创建时间
   */
  createTime?: Date;
  /**
   * 删除标志，（0代表存在 2代表删除）
   */
  delFlag?: string;
  /**
   * 角色ID
   */
  id: number;
  /**
   * 身份id列表
   */
  identityIdList?: number[];
  /**
   * 角色权限
   */
  key?: string;
  /**
   * 菜单树选择项是否关联显示，（ 0：父子不互相关联显示 1：父子互相关联显示）
   */
  menuCheckStrictly?: boolean;
  /**
   * 角色名称
   */
  name: string;
  /**
   * 角色排序
   */
  orderNum: number;
  /**
   * 父节点id列表
   */
  parentIdList?: number[];
  /**
   * 角色权限id
   */
  permissionIds?: number[];
  /**
   * 角色权限
   */
  permissions?: SysPermissionVo[];
  /**
   * 备注
   */
  remark?: string;
  /**
   * 子节点id列表
   */
  sonIdList?: number[];
  /**
   * 角色状态，（0正常 1停用）
   */
  status?: string;
  /**
   * 是否超级管理员
   */
  superAdmin?: boolean;
  /**
   * 角色人数
   */
  totalPeople?: number;
  /**
   * 数据更新者
   */
  updateBy?: string;
  /**
   * 数据更新时间
   */
  updateTime?: Date;
  /**
   * 用户是否属于此角色，默认不属于
   */
  userBelong?: boolean;
}

/**
 * 菜单权限视图对象
 */
export interface SysPermissionVo {
  /**
   * 是否缓存
   */
  cached?: boolean;
  /**
   * 子权限
   */
  children?: SysPermissionVo[];
  /**
   * 权限标识编码
   */
  code?: string;
  /**
   * 组件路径
   */
  component?: string;
  componentInfo?: string;
  /**
   * 数据创建者
   */
  createBy?: string;
  /**
   * 数据创建时间
   */
  createTime?: Date;
  /**
   * 是否为外链
   */
  frame?: boolean;
  /**
   * 界面图标
   */
  icon?: string;
  /**
   * 权限ID
   */
  id?: number;
  innerLink?: boolean;
  menuFrame?: boolean;
  /**
   * 后端请求方法
   */
  method?: string;
  /**
   * 权限名称
   */
  name?: string;
  /**
   * 显示顺序
   */
  orderNum?: number;
  /**
   * 父权限ID
   */
  parentId?: number;
  /**
   * 父权限名称
   */
  parentName?: string;
  parentView?: boolean;
  /**
   * 路由地址
   */
  path?: string;
  /**
   * 路由参数
   */
  queryParam?: string;
  /**
   * 备注
   */
  remark?: string;
  /**
   * 请求的模型主键
   */
  requestModelId?: number;
  /**
   * 后端请求路径
   */
  requestPath?: string;
  /**
   * 返回的模型主键
   */
  returnModelId?: number;
  routeName?: string;
  routerPath?: string;
  /**
   * 菜单状态，（0正常 1停用）
   */
  status?: string;
  /**
   * 权限类型，（D目录 M菜单 B按钮 O其他）
   */
  type?: string;
  /**
   * 数据更新者
   */
  updateBy?: string;
  /**
   * 数据更新时间
   */
  updateTime?: Date;
  /**
   * 显示状态
   */
  visible?: boolean;
}
